package com.synnex.mobile.servier.core.survey.service.impl;

import com.synnex.mobile.generic.core.util.ObjectUtil;
import com.synnex.mobile.servier.core.service.impl.AbstractServiceImpl;
import com.synnex.mobile.servier.core.survey.bo.QuestionnaireBo;
import com.synnex.mobile.servier.core.survey.dao.QuestionnaireDao;
import com.synnex.mobile.servier.core.survey.dao.SurveyDao;
import com.synnex.mobile.servier.core.survey.dto.Questionnaire;
import com.synnex.mobile.servier.core.survey.dto.Survey;
import com.synnex.mobile.servier.core.survey.service.QuestionnaireService;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

@Transactional
public class QuestionnaireServiceImpl extends AbstractServiceImpl implements QuestionnaireService {

    private QuestionnaireDao questionnaireDao;
    private SurveyDao surveyDao;

    public void setQuestionnaireDao(QuestionnaireDao questionnaireDao) {
        this.questionnaireDao = questionnaireDao;
    }

    public void setSurveyDao(SurveyDao surveyDao) {
        this.surveyDao = surveyDao;
    }

    public List<QuestionnaireBo> getQuestionnaires() {
        List<Questionnaire> datas = questionnaireDao.getQuestionnaires();
        return QuestionnaireBo.createInstance(datas);

    }

    public void addQuestionnaire(QuestionnaireBo bo) {
        Questionnaire dto = ObjectUtil.copyProperties(bo, Questionnaire.class);
        dto.setEntryDate(new Date());
        questionnaireDao.save(dto);
    }

    public QuestionnaireBo getQuestionById(Integer id) {
        Questionnaire dto = questionnaireDao.getQuestionById(id);
        return QuestionnaireBo.createInstance(dto);
    }

    public void editQuestionnaire(QuestionnaireBo bo) {
        Questionnaire dto = ObjectUtil.copyProperties(bo, Questionnaire.class);
        dto.setUpdateDate(new Date());
        questionnaireDao.editQuestionnaire(dto);
    }

    public void deleteQuestionnaire(Integer id) {

        List<Survey> surveys = surveyDao.listSurvey(id);

        if(surveys!=null && !surveys.isEmpty()){
            for(Survey survey:surveys){
                surveyDao.deleteSurvey(survey);
            }
        }

        questionnaireDao.deleteQuestionnaire(id);

    }


}
